package pw.archipelag.loaderGame.interfaceGame {
	import flash.events.IEventDispatcher;
	import flash.display.DisplayObjectContainer;
	import flash.display.MovieClip;
	import pw.archipelag.loaderGame.interfaceGame.skinsPanel.SkinPanelSet;

	/**
	 * Interfejs IGame pokazuje wymagania jakie powinna spełniać główna klasa gry,
	 * przykład: pw.archipelag.templateGame.TemplateGame.as
	 */
	
	public interface IGame extends IEventDispatcher {
		
		/**
		 * odpalana po załadowaniu i pokazaniu (z alpha 0 na 1) załadowanego swfa z grą, może ustawiać środowisko gry (jest tu dostępny this.stage), nie może rozpoczynać gry
		 * @param descriptionPlayer opis gracza
		 * @return true, gdy gra ma do wczytania jakieś dodatkowe assety i sama odpali event dodający
		 */
		function init(descriptionPlayer: DescriptionPlayer): *;

		/**
		 * pobieranie nazwy gry do wyświetlenia jej na dużym panelu w dolnym prawym rogu
		 * @return nazwa gry
		 */
		function get nameGame(): String
		
		/**
		 * pobieranie definicji klasy MovieClipa z pomocą gry do wyświetlenia jej w pomocy na dużym panelu
		 * @return definicja (nazwa) klasy
		 */
		function get classMcHelp(): Class;
		
		/**
		 * pobieranie kontenera skórek do obu paneli: dużego - z wynikami i pomocą, odpalanego po kliknięciu w przyciski Pomoc i Najlepsi oraz na początku i końcu gry i małego - tylko z przyciskami Pomoc i Najlepsi, widocznego cały czas w czasie trwania gry
		 * @return kontener skórek (może być null, wtedy użyta jest defaultowa skórka)
		 */
		function get skinPanelSet(): SkinPanelSet;
		
		/**
		 * odpalana po kliknięciu w przycisk Graj na dużym panelu na początku lub końcu gry (po wygaszeniu dużego panelu), powinna rozpoczynać grę
		 */
		function start(): void;
		
		/**
		 * odpalana po otwarciu dużego panelu poprzez kliknięcie na przycisk Pomoc lub Najlepsi na małym panelu, powinna pauzować lub kontynuować grę (na scenie z dużym panelu rozpięty jest blokada, tak że nie będzie można kliknąć w nic pod spodem)
		 * @param isPauseContinue czy gra ma być spauzowana (duży panel został otwarty) - 0 , lub kontynuowana (duży panel został zamknięty) - 1
		 */
		function set isPauseContinue(value: uint): void;
		
	}

}